home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / Softdisk Magazette Volume 1, No. 05 (1982-01)(Softdisk)(Side B).zip / Softdisk Magazette Volume 1, No. 05 (1982-01)(Softdisk)(Side B).do / SCRABBLE.HELP.bas < prev    next >
BASIC Source File  |  1996-12-24  |  4KB  |  70 lines

  1. 10  TEXT : HOME : HTAB 12: INVERSE : PRINT "WORD UNSCRAMBLER": DIM A$(720): NORMAL 
  2. 20  VTAB 6: INPUT "GIMME THE LETTERS! ";O$
  3. 30 C = 1:L =  LEN(O$):Q = 1: FOR S = 1 TO L:Q = Q *S: NEXT S: REM  C IS A COUNTER; Q CALCULATES L! (L FACTORIAL), THE TOTAL NUMBER OF PERMUTATIONS
  4. 40  FLASH : VTAB 12: HTAB 16: PRINT "THINKING": NORMAL 
  5. 50  IF L = 4  THEN FOUR$ = O$: GOSUB 330: GOTO 160
  6. 60  IF L = 5  THEN FIVE$ = O$: GOSUB 420: GOTO 160
  7. 64  REM 
  8. 65  REM  **6-LETTER LOOP**
  9. 66  REM 
  10. 70 SIX$ = O$
  11. 80  FOR A = 0 TO 5
  12. 90 Y$ =  LEFT$(SIX$,1):FIVE$ =  RIGHT$(SIX$,5): REM    PULL THE FIRST LETTER OFF
  13. 100  GOSUB 420: REM  SEND WHAT'S LEFT TO THE 5-LETTER LOOP
  14. 110  FOR P = 1 +120 *A TO 120 +120 *A: REM  A COUNTS THE NUMBER OF TIMES THROUGH THE 6-LETTER LOOP; EACH TIME THROUGH THERE ARE 120 NEW COMBINATIONS TO BE ADDED TO THE ARRAY A$()
  15. 120 A$(P) = Y$ +A$(P)
  16. 130  NEXT P: REM  THIS LOOP TAKES 120 FIVE-LETTER COMBINATIONS FROM THE 5-LETTER LOOP AND ADDS THE SIXTH LETTER PULLED OFF IN LINE 90 TO MAKE 6-LETTER COMBINATIONS
  17. 140 SIX$ =  RIGHT$(SIX$,1) + LEFT$(SIX$,5): REM  TAKE THE LAST LETTER OF THE WORD AND STICK IT ON THE FRONT INSTEAD - THIS MAKES A NEW 6-LETTER COMBINATION
  18. 150  NEXT A: REM  DO IT ALL AGAIN WITH THE NEW 6-LETTER COMBINATION
  19. 154  REM 
  20. 155  REM **OUTPUT ROUTINE**
  21. 156  REM 
  22. 160  HOME : FOR Y = 1 TO Q
  23. 170  PRINT A$(Y),: IF Y/60 =  INT(Y/60)  THEN  GOSUB 300
  24. 180  NEXT Y
  25. 190  PRINT 
  26. 200  INPUT "ANOTHER ONE? (Y/N) ";V$
  27. 210  IF V$ < >"Y"  THEN  END 
  28. 220  RUN 
  29. 224  REM 
  30. 225  REM **3-LETTER LOOP**
  31. 226  REM 
  32. 230 E$ = THREE$
  33. 240  FOR I = 1 TO 3
  34. 250  GOSUB 280:A$(C) = E$:C = C +1: GOSUB 280: GOSUB 290:A$(C) = E$:C = C +1
  35. 260  NEXT I: REM   THIS IS THE HEART OF THE PROGRAM.  LINE 280 "SWAPS" THE 3-LETTER WORD (ABC BECOMES ACB); THE RESULT GOES IN ARRAY A$() WHICH STORES ALL RESULTS. THE COUNTER IS INCREMENTED AND THE WORD IS SWAPPED AGAIN, 
  36. 261  REM   RESTORING THE ORIGINAL ORDER.  LINE 290 THEN "ROTATES" THE WORD (ABC BECOMES CBA), THE RESULT IS STORED, THE COUNTER INCREMENTED, AND THE PROCEDURE REPEATED.  3 PASSES THROUGH THIS LOOP WILL PRODUCE ALL 6 PERMUTATIONS OF 
  37. 262  REM  3 LETTERS.  THESE PERMUTATIONS ARE THEN RETURNED TO THE 4-LETTER LOOP.
  38. 270  RETURN 
  39. 280 E$ =  MID$ (E$,1,1) + MID$ (E$,3,1) + MID$ (E$,2,1): RETURN 
  40. 290 E$ =  MID$ (E$,3,1) + LEFT$(E$,2): RETURN 
  41. 294  REM 
  42. 295  REM **STOP-PRINT ROUTINE**
  43. 296  REM 
  44. 300  PRINT : PRINT : INPUT "HIT RETURN TO SEE MORE...";R$: PRINT 
  45. 310  IF R$ = ""  THEN  RETURN 
  46. 320  GOTO 310
  47. 324  REM 
  48. 325  REM **4-LETTER LOOP**
  49. 326  REM 
  50. 330  FOR J = 0 TO 3
  51. 340 X$ =  LEFT$(FOUR$,1):THREE$ =  RIGHT$(FOUR$,3): REM  GRAB THE FIRST LETTER
  52. 350  GOSUB 230: REM  SEND WHAT'S LEFT TO THE 3-LETTER LOOP
  53. 360  FOR K = 1 +6 *J +24 *M +120 *A TO 6 +6 *J +24 *M +120 *A: REM  A COUNTS THE NUMBER OF PASSES THROUGH THE 6-LOOP, M COUNTS THE 5-LOOP AND J COUNTS THE 4-LOOP - EACH PERMUTATION GETS A UNIQUE PLACE IN THE ARRAY A$()
  54. 370 A$(K) = X$ +A$(K)
  55. 380  NEXT K
  56. 390 FOUR$ =  RIGHT$(FOUR$,1) + LEFT$(FOUR$,3): REM  MAKE A NEW WORD BY TAKING THE LAST LETTER AND MAKING IT FIRST (ABCD BECOMES DABC)
  57. 400  NEXT J: REM  DO IT ALL AGAIN WITH THE NEW 4-LETTER WORD
  58. 410  RETURN 
  59. 414  REM 
  60. 415  REM **5-LETTER LOOP**
  61. 416  REM 
  62. 420  FOR M = 0 TO 4
  63. 430 W$ =  LEFT$(FIVE$,1):FOUR$ =  RIGHT$(FIVE$,4): REM   GRAB THE FIRST LETTER
  64. 440  GOSUB 330: REM  SEND WHAT'S LEFT TO THE 4-LOOP
  65. 450  FOR N = 1 +24 *M +120 *A TO 24 +24 *M +120 *A
  66. 460 A$(N) = W$ +A$(N)
  67. 470  NEXT N
  68. 480 FIVE$ =  RIGHT$(FIVE$,1) + LEFT$(FIVE$,4): REM  MAKE A NEW 5-LETTER WORD BY PUTTING THE LAST LETTER FIRST (ABCDE BECOMES EABCD)
  69. 490  NEXT M: REM  DO IT ALL AGAIN WITH THE NEW 5-LETTER WORD
  70. 500  RETURN